package graph;

import linearlist.Queue;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author Zhouchb
 * @Create 2021-10-2021/10/30 :10:47
 * @Description
 */
public class Graph {
    //领接表
    private List<Integer>[] adj;
    //记录边数量
    private int E;
    //记录顶点数量
    private final int V;

    //创建一个包含V个顶点但不包含边的图
   public Graph(int V){
       //初始化顶点
        this.V = V;
        //初始化边
       this.E = 0;
       this.adj = new List[V];
       for (int i=0;i<adj.length;i++){
           this.adj[i] = new ArrayList<Integer>();
       }
    }

    //获取图中顶点的数量
    public int v(){
       return V;
    }
    //获取图中边的数量
    public int E(){
       return E;
    }
    //向图中添加一条边 v-w
    public void addEdge(int v,int w){
       this.adj[v].add(w);
       this.adj[w].add(v);
       E++;
    }
    //获取和顶点v相邻的所有顶点
    public List<Integer> adj(int v){
       return adj[v];
    }
}
